package cn.assumejson.pro_netty.netty;

import cn.assumejson.pro_netty.core.Mediator;
import cn.assumejson.pro_netty.netty.client.asyn.RequestFuture;
import cn.assumejson.pro_netty.netty.client.asyn.Response;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;

import static cn.assumejson.pro_netty.utils.GsonUtil.gson;

/**
 * @author by gang.Li 2022/3/12 10:33
 */
@ChannelHandler.Sharable
public class ServerHandler extends ChannelInboundHandlerAdapter {
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
//        RequestFuture requestFuture = JSONObject.parseObject(msg.toString(), RequestFuture.class);
        RequestFuture requestFuture = gson.fromJson(msg.toString(), RequestFuture.class);
//        // 获取请求id
//        long id = requestFuture.getId();
//        System.out.println("请求信息为：====" + msg.toString());
//
//        // 构造响应结果
//        Response response = new Response();
//        response.setId(id);
//        response.setResult("服务器响应ok");

        // 获取对应的方法的响应体
        Response response = Mediator.process(requestFuture);


        // 在 @ChannelHandler.Sharable  共享的handler 中无效
        ctx.channel().writeAndFlush(gson.toJson(response));

        // 将结果相应回客户端
//        ctx.channel().write(JSONObject.toJSONString(response));
//        ctx.channel().unsafe().flush();
    }
}
